package com.cw.jeeyt.dao.mapper.api;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.cw.jeeyt.common.Order;
import com.cw.jeeyt.common.annotation.LogParam;
import com.cw.jeeyt.dao.model.api.ApiFacadeObjEnumDo;

/**
 * 枚举对象信息表 dao数据库操作接口
 *
 * @author chenw
 * @version 1.0.0
 */
public interface ApiFacadeObjEnumMapper {
    /**
     * 新增枚举对象信息表
     *
     * @param apiFacadeObjEnum
     * @return 整数
     */
    @LogParam(logDes = "新增枚举对象信息表", operateModule = "枚举对象信息表管理")
    Integer insert(ApiFacadeObjEnumDo apiFacadeObjEnum);

    /**
     * 新增枚举对象信息表不为空的字段
     *
     * @param apiFacadeObjEnum
     * @return 整数
     */
    @LogParam(logDes = "新增枚举对象信息表", operateModule = "枚举对象信息表管理")
    Integer insertSelective(ApiFacadeObjEnumDo apiFacadeObjEnum);

    /**
     * 删除枚举对象信息表
     *
     * @param apiFacadeObjEnum
     */
    @LogParam(logDes = "删除枚举对象信息表", operateModule = "枚举对象信息表管理")
    void delete(ApiFacadeObjEnumDo apiFacadeObjEnum);

    /**
     * 根据父id删除枚举对象信息
     *
     * @param parentId
     * @throws Exception
     */
    @LogParam(logDes = "根据父id删除枚举对象信息", operateModule = "枚举对象信息表管理")
    Integer deleteByParentId(Long parentId);

    /**
     * 修改枚举对象信息表不为null的字段
     *
     * @param apiFacadeObjEnum
     */
    @LogParam(logDes = "修改枚举对象信息表", operateModule = "枚举对象信息表管理")
    void updateSelective(ApiFacadeObjEnumDo apiFacadeObjEnum);

    /**
     * 修改枚举对象信息表
     *
     * @param apiFacadeObjEnum
     */
    @LogParam(logDes = "修改枚举对象信息表", operateModule = "枚举对象信息表管理")
    void update(ApiFacadeObjEnumDo apiFacadeObjEnum);

    /**
     * 根据主键查询枚举对象信息表
     *
     * @return 枚举对象信息表
     */
    ApiFacadeObjEnumDo getById(@Param("id") Long id);

    /**
     * 查询所有枚举对象信息表
     *
     * @return 枚举对象信息表集合
     */
    List<ApiFacadeObjEnumDo> queryApiFacadeObjEnumList();

    /**
     * 分页查询枚举对象信息表
     *
     * @param apiFacadeObjEnum 查询条件
     * @return 枚举对象信息表集合
     */
    List<ApiFacadeObjEnumDo> queryByPage(@Param("apiFacadeObjEnum") ApiFacadeObjEnumDo apiFacadeObjEnum,
        @Param("order") Order order);

    /**
     * 根据父id查询枚举对象信息
     *
     * @param parentId
     * @return
     */
    List<ApiFacadeObjEnumDo> queryListByParentId(Long parentId);

    /**
     * 根据枚举编码和枚举名称查询枚举信息
     *
     * @param enumCode
     * @param enumName
     * @return
     */
    ApiFacadeObjEnumDo queryEnumByCodeAndName(@Param("enumCode") String enumCode, @Param("enumName") String enumName,
        @Param("enumPackage") String enumPackage);
}
